package models

import "time"

const (
	UserRole_Admin          string = "admin"           // 管理员
	UserRole_Designer       string = "designer"        // 方案设计
	UserRole_DesignReviewer string = "design_reviewer" // 方案设计审核
	UserRole_Accepter       string = "accepter"        // 方案验收
	UserRole_AcceptReviewer string = "accept_reviewer" // 方案验收审核
	UserRole_Client         string = "client"          // 客户
)

// ProjectUser 用户
type ProjectUser struct {
	ID        int       `db:"id" json:"id"`
	UserID    string    `db:"user_id" json:"user_id"`     // 账号
	UserName  string    `db:"user_name" json:"user_name"` // 姓名
	Password  string    `db:"password" json:"password"`
	CreatedAt time.Time `db:"created_at" json:"created_at"`
	OrgCode   string    `db:"org_code" json:"org_code"`   //组织编码
	OrgLevel  int       `db:"org_level" json:"org_level"` // comment:"建设单位层级"`
	IsActive  bool      `db:"is_active" json:"is_active"` // comment:"是否激活"`
}

// Org 建设单位基本属性
type Org struct {
	ID       int    `db:"id" json:"id"`               // comment:"建设单位ID"`
	OrgName  string `db:"org_name" json:"org_name"`   // comment:"建设单位简称"`
	OrgCode  string `db:"org_code" json:"org_code"`   // comment:"建设单位编码"`
	OrgLevel int    `db:"org_level" json:"org_level"` // comment:"建设单位层级"`
	Prefix   string `db:"prefix" json:"prefix"`       // comment:"建设单位前缀"`
	FullName string `db:"fullname" json:"fullname"`   // comment:"建设单位标准全称"`
	LiteName string `db:"litename" json:"litename"`   // comment:"建设单位标准简称"`
	OrgInuse int    `db:"org_inuse" json:"org_inuse"` // comment:"是否在工程项目中使用"`
}

// ScmOrg 建设单位供应链属性
type ScmOrg struct {
	ID                int    `db:"id" json:"id"`                                 // comment:"建设单位ID"`
	PkorgOutbound     string `db:"pkorg_outbound" json:"pkorg_outbound"`         // comment:"供应链组织主立项表，出库"`
	PkorgProjectLib   string `db:"pkorg_projectlib" json:"pkorg_projectlib"`     // comment:"供应链组织主工程"`
	PkorgOperatingLib string `db:"pkorg_operatinglib" json:"pkorg_operatinglib"` // comment:"供应链组织主运营"`
	PkorgRealLib      string `db:"pkorg_reallib" json:"pkorg_reallib"`           // comment:"供应链组织主实体"`
	Ckname            string `db:"ckname" json:"ckname"`                         // comment:"供应链工程库名称"`
	OrgCode           string `db:"org_code" json:"org_code"`                     // comment:"组织代码"`
}

type Role struct {
	RoleID      string    `db:"role_id" json:"role_id"`
	RoleName    string    `db:"role_name" json:"role_name"`
	Description string    `db:"description" json:"description"`
	Status      int       `db:"status" json:"status"`
	CreateAt    time.Time `db:"create_at" json:"create_at"`
}

type UserRole struct {
	UserID string `db:"user_id" json:"user_id"`
	RoleID string `db:"role_id" json:"role_id"`
}

type UserWithRoles struct {
	ProjectUser
	Roles []Role `json:"roles"`
}

type AuthIdentity struct {
	UserID   string   `json:"user_id"`
	UserName string   `json:"user_name"`
	UserType int      `json:"user_type"`
	OrgCode  string   `json:"org_code"`
	OrgLevel int      `json:"org_level"`
	RoleIDs  []string `json:"role_ids"`
}
